Revision:
Using RegExp (Regular Expressions) to search for street names can be tricky because street names vary widely in format, but you can create patterns to match common structures.
code:
<script>
const pattern = /\d+\s+\w+\s+(?:Street|St|Avenue|Ave|Road|Rd|Boulevard|Blvd|Lane|Ln|Drive|Dr)/i;
const text = "123 Main Street";
console.log(pattern.test(text)); // true
</script>
Where:
\d+→ house number
\s+→ one or more spaces
\w+street name (assumes single word)
(?:...) → non-capturing group for street types
i flagcase-insensitive
code:
<div>
<p id="name"></p>
</div>
<style>
#name{margin-left: 2vw; }
</style>
<script>
const text1 = "456 Oak Avenue";
const match = text1.match(/\d+\s+([A-Za-z\s.]+?)\s+(?:Street|St|Ave|Avenue|Rd|Road|Blvd|Boulevard|Ln|Lane|Dr|Drive)/i);
if (match) {
console.log(match[1].trim()); // "Oak"
document.getElementById("name").innerText = `Extracted street name from "${text1}": ${match[1].trim()}`;
}
</script>
code:
<div>
<p id="name1"></p>
</div>
<style>
#name1{margin-left: 2vw; }
</style>
<script>
// More robust pattern
const pattern_A = /\d+\s+([A-Za-z0-9\s.'-]+?)\s+(?:Street|St\.?|Avenue|Ave\.?|Road|Rd\.?|Boulevard|
Blvd\.?|Lane|Ln\.?|Drive|Dr\.?|Way|Court|Ct\.?|Circle|Cir\.?)/i;
const examples = [
"123 Martin Luther King Jr. Blvd",
"456 O'Malley Road",
"789 West 42nd St.",
"1001 De la Cruz Ave"
];
examples.forEach(addr => {
const match = addr.match(pattern_A);
if (match) {
console.log(`Street name: "${match[1].trim()}"`);
document.getElementById("name1").innerText += `street name from "${addr}": ${match[1].trim()}\n`;
}
});
</script>
To select pictures in a gallery based on street names, you typically need to associate each image with metadata (like a street name), then filter or query those images using that metadata. Here’s how you can do it in practice using HTML, JavaScript, and data attributes (or other metadata sources):
Use HTML data-* attributes, JavaScript objects, or a data source (e.g., JSON) to link each image to its street name.
code:
<div>
<div class="gallery">
<img src="../../images/10.jpg" data-street="Main Street" alt="Main Street">
<img src="../../images/11.jpg" data-street="Oak Avenue" alt="Oak Avenue">
<img src="../../images/12.jpg" data-street="Pine Road" alt="Pine Road">
<img src="../../images/13a.jpg" data-street="Elm Street" alt="Elm Street">
</div>
<input type="text" id="streetSearch" placeholder="Search by street name" >
</div>
<style>
.gallery{position: relative;display: grid; grid-template-columns: repeat(4, 1fr);
width: 99vw; margin: 0.5vw; }
.gallery img {width: 20vw; height: 15vw; display: block; margin-bottom: 1vw;
object-fit: cover; object-position: 0.2vw 0.2vw; }
#streetSearch {margin-top: 10px; padding: 5px; width: 200px;}
</style>
<script>
document.getElementById('streetSearch').addEventListener('input', function(e) {
const query = e.target.value.trim();
const images = document.querySelectorAll('.gallery img');
// Build a case-insensitive regex (escape special characters for safety)
const escapedQuery = query.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
const regex = new RegExp(escapedQuery, 'i');
images.forEach(img => {
const street = img.dataset.street || '';
if (query === '' || regex.test(street)) {
img.style.display = 'block'; // or 'inline-block', etc.
} else {
img.style.display = 'none';
}
});
});
</script>
code:
<div>
<input type="text" id="searchInput" placeholder="Search by street name..." />
<div class="gallery_1" id="gallery_1">
</div>
</div>
<style>
.gallery_1 { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 10px; }
.image-item { flex: 0 0 150px; text-align: center; }
.image-item img { width: 100%; height: auto; }
.image-item .street { font-size: 0.9em; color: #555; }
</style>
<script>
// Your image data: array of objects with URL and street name
const images = [
{ url: '../../images/10.jpg', street: 'Maple Avenue' },
{ url: '../../images/11.jpg', street: 'Oak Street' },
{ url: '../../images/12.jpg', street: 'Pine Road' },
{ url: '../../images/13a.jpg', street: 'Elm Boulevard' },
{ url: '../../images/14a.jpg', street: 'Cedar Lane' }
// Add more as needed
];
const galleryEl = document.getElementById('gallery_1');
const searchInput = document.getElementById('searchInput');
// Render all images initially
function renderImages(imgList) {
galleryEl.innerHTML = '';
imgList.forEach(img => {
const div = document.createElement('div');
div.className = 'image-item';
div.innerHTML = `
<img src="${img.url}" alt="${img.street}">
<div class="street">${img.street}</div>
`;
galleryEl.appendChild(div);
});
}
// Initial render
renderImages(images);
// Add search listener
searchInput.addEventListener('input', (e) => {
const query = e.target.value.trim().toLowerCase();
if (query === '') {
renderImages(images);
} else {
const filtered = images.filter(img =>
img.street.toLowerCase().includes(query)
);
renderImages(filtered);
}
});
</script>
<div>
<input type="text" id="searchInput_a" placeholder="Type a street name to search..." autocomplete="off" />
<div class="gallery_a" id="gallery_a">
<!-- Each image item includes its street name -->
<div class="image-item_a" data-street="Maple Avenue">
<img src="../../images/10.jpg" alt="Maple Avenue" />
<div class="street-name">Maple Avenue</div>
</div>
<div class="image-item_a" data-street="Oak Street">
<img src="../../images/11.jpg" alt="Oak Street" />
<div class="street-name">Oak Street</div>
</div>
<div class="image-item_a" data-street="Pine Road">
<img src="../../images/12.jpg" alt="Pine Road" />
<div class="street-name">Pine Road</div>
</div>
<div class="image-item_a" data-street="Elm Boulevard">
<img src="../../images/13a.jpg" alt="Elm Boulevard" />
<div class="street-name">Elm Boulevard</div>
</div>
<!-- Add more as needed -->
</div>
</div>
<style>
#searchInput_a {width: 100%; padding: 0.8vw; margin-bottom: 1.2vw; font-size: 1vw;box-sizing: border-box; }
.gallery_a { display: flex; flex-wrap: wrap; gap: 1vw; }
.image-item_a {flex: 0 0 calc(33% - 1vw); text-align: center; border: 1px solid #eee;
border-radius: 0.3vw; padding: 0.6vw; box-sizing: border-box; }
.image-item img { max-width: 100%; height: auto; border-radius: 0.1vw;}
.street-name {margin-top: 0.2vw; font-weight: bold; color: #333; }
@media (max-width: 600px) {
.image-item_a {flex: 0 0 100%;}
}
</style>
<script>
const searchInput_a = document.getElementById('searchInput_a');
const imageItems_a = document.querySelectorAll('.image-item_a');
searchInput_a.addEventListener('input', function () {
const query = this.value.trim().toLowerCase();
imageItems_a.forEach(item => {
const street = item.getAttribute('data-street').toLowerCase();
if (query === '' || street.includes(query)) {
item.style.display = ''; // show
} else {
item.style.display = 'none'; // hide
}
});
});
</script>